In the field of computer networking, which includes packet-switching networks, it is a constant challenge to allocate limited amount of resources to serve as many applications and devices on a network as possible. For example, for a network application to function properly, it may require a certain amount of network throughput, as well as a guarantee that any delays, jitters, packet droppings, or bit error probabilities associated with the network application are below a certain threshold level. It is often insufficient to allocate resources for a network application to adequately support some services, while neglecting other services. To illustrate, suppose a video streaming application is configured to operate at a high bit rate. Such an application may still encounter adoption issues if a high level of jitters or errors are present in the streaming data.
One approach to guarantee a high level of performance and service quality, for example, providing high bit rate, low latency, and low bit error rate, is to quickly detect and address any actual or potential problems in a network communication session. However, merely examining a single aspect of the network communication session (e.g., bit rate) may not be sufficient to adequately address the performance problems associated with the network communication session.